/*
 * @Author: gonglf
 * @Date: 2022-08-08 20:40:25
 * @LastEditors: gonglf
 * @LastEditTime: 2022-08-09 20:23:08
 * @Description:
 *
 */
package main

import (
	"fmt"
	"net"
)

// UDP 客户端
func main() {
	socket, err := net.DialUDP("udp", nil, &net.UDPAddr{
		IP:   net.IPv4(127, 0, 0, 1),
		Port: 30000,
	})
	if err != nil {
		fmt.Println("连接服务端失败，err:", err)
		return
	}
	defer socket.Close()

	sendData := []byte("Hello server")
	_, err = socket.Write(sendData) // 发送数据
	_, err = socket.Write(sendData) // 发送数据
	if err != nil {
		fmt.Println("发送数据失败，err:", err)
		return
	}

	data := make([]byte, 4096)
	//TODO remoteAddr一定和拨号的地址一样的吗？
	n, remoteAddr, err := socket.ReadFromUDP(data) // 接收数据，这里相当于listen了？？知道地址后找一个客户端拨过去试一下
	if err != nil {
		fmt.Println("接收数据失败，err:", err)
		return
	}
	fmt.Printf("recv:%v addr:%v count:%v\n", string(data[:n]), remoteAddr, n)

}
